#ifndef __GAME_H__
#define __GAME_H__

//Ogre Libraries
#include "Ogre.h"
#include "OgreConfigFile.h"

//Game Libraries
#include <GameManager.h>
#include <GameState.h>
#include <PlayState.h>

//If compiling on Mac OS X, use this to get the resource bundle path functions
#if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
#include <CoreFoundation/CoreFoundation.h>
/*

Note: I commented this out because it was conflicting the macBundlePath()
function defined in OgreNewt

std::string macBundlePath()
{
    char path[1024];
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    assert(mainBundle);

    CFURLRef mainBundleURL = CFBundleCopyBundleURL(mainBundle);
    assert(mainBundleURL);

    CFStringRef cfStringRef = CFURLCopyFileSystemPath( mainBundleURL, kCFURLPOSIXPathStyle);
    assert(cfStringRef);

    CFStringGetCString(cfStringRef, path, 1024, kCFStringEncodingASCII);

    CFRelease(mainBundleURL);
    CFRelease(cfStringRef);

    return std::string(path);
}
*/

//Replace it with just a prototype
std::string macBundlePath();

#endif


using namespace Ogre;

/** Base class which manages the standard startup of an Ogre application.
    Designed to be subclassed for specific examples if required.
*/
class GameApplication
{
	public:
		// Standard constructor & destructor
		GameApplication();
		virtual ~GameApplication();
		
		std::string getResourcePath();
		void go();
		
	protected:
		Ogre::String mResourcePath;
		GameManager* mGameManager;
};


#endif
